<!DOCTYPE HTML>
<html lang="en">
<head>
  <meta charset="utf-8">
  
  <title>gazebo的使用（一） | Hexo</title>
  <meta name="author" content="John Doe">
  
  <meta name="description" content="系统：Ubuntu 20.04
Gazebo是一款动态的3D仿真软件，它可以快速测试算法，设计机器人，执行回归测试，使用现实场景训练人工智能系统，并且可以在复杂的室内和室外环境中，精确和有效地模拟大量的机器人。Gazebo有一个强大的物理引擎，高质量的图形界面，有着高保真度的视觉模拟，免费使用！
系">
  
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

  <meta property="og:title" content="gazebo的使用（一）"/>
  <meta property="og:site_name" content="Hexo"/>

  
    <meta property="og:image" content=""/>
  

  <link rel="shortcut icon" href="/blog/favicon.png">
  
  
<link rel="stylesheet" href="/blog/css/style.css">

  <!--[if lt IE 9]><script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script><![endif]-->
  

<meta name="generator" content="Hexo 5.4.0"></head>


<body>
  <header id="header" class="inner"><div class="alignleft">
  <h1><a href="/blog/">Hexo</a></h1>
  <h2><a href="/blog/"></a></h2>
</div>
<nav id="main-nav" class="alignright">
  <ul>
    
      <li><a href="/blog/null">Home</a></li>
    
      <li><a href="/blog/archives">Archives</a></li>
    
  </ul>
  <div class="clearfix"></div>
</nav>
<div class="clearfix"></div>
</header>
  <div id="content" class="inner">
    <div id="main-col" class="alignleft"><div id="wrapper"><article id="post-gazebo的使用（一）" class="h-entry post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  
  <div class="post-content">
    <header>
      
        <div class="icon"></div>
        <time class="dt-published" datetime="2021-04-07T08:24:35.000Z"><a href="/blog/2021/04/07/gazebo%E7%9A%84%E4%BD%BF%E7%94%A8%EF%BC%88%E4%B8%80%EF%BC%89/">2021-04-07</a></time>
      
      
  
    <h1 class="p-name title" itemprop="headline name">gazebo的使用（一）</h1>
  

    </header>
    <div class="e-content entry" itemprop="articleBody">
      
        <p>系统：<code>Ubuntu 20.04</code></p>
<p><code>Gazebo</code>是一款动态的3D仿真软件，它可以快速测试算法，设计机器人，执行回归测试，使用现实场景训练人工智能系统，并且可以在复杂的室内和室外环境中，精确和有效地模拟大量的机器人。<code>Gazebo</code>有一个强大的物理引擎，高质量的图形界面，有着高保真度的视觉模拟，免费使用！</p>
<h2 id="系统的要求"><a href="#系统的要求" class="headerlink" title="系统的要求"></a>系统的要求</h2><p><code>Gazebo</code>目前在<code>Ubuntu</code>上使用得最好，<code>Ubuntu</code>是Linux的一个版本。电脑最好需要有如下配置</p>
<ul>
<li><p>一个可以工作的GPU</p>
</li>
<li><p>等价于i5及以上的CPU</p>
</li>
<li><p>至少500MB的磁盘存储</p>
</li>
</ul>
<h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><p>安装<code>Gazebo</code>可以通过源码的方式进行安装也可以通过命令行的方式进行安装，若是需要对<code>Gazebo</code>展开开发的工作，建议源码安装<code>Gazebo</code>，下面我们简单介绍以命令行的形式安装<code>Gazebo</code></p>
<ol>
<li><p>设置计算机以接受来自<code>packes.osrfoundation.org</code>的软件。</p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo sh -c &#x27;echo &quot;deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main&quot; &gt; /etc/apt/sources.list.d/gazebo-stable.list&#x27;</span><br></pre></td></tr></table></figure>

<p>查看上述命令是否执行成功，可以通过如下方式</p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cat /etc/apt/sources.list.d/gazebo-stable.list</span><br></pre></td></tr></table></figure>

<p>终端应该会返回</p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">deb http://packages.osrfoundation.org/gazebo/ubuntu-stable focal main</span><br></pre></td></tr></table></figure></li>
<li><p>设置key</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wget https:&#x2F;&#x2F;packages.osrfoundation.org&#x2F;gazebo.key -O - | sudo apt-key add -</span><br></pre></td></tr></table></figure></li>
<li><p>安装Gazebo</p>
<p>首先更新debian数据库:</p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo apt-get update</span><br></pre></td></tr></table></figure>

<p>提示: 确保apt-get更新过程在没有任何错误的情况下结束，控制台输出以Done结束，如下所示:</p>
<p>接下来安装Gazebo-11：</p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo apt-get install libgazebo11-dev</span><br></pre></td></tr></table></figure>

<p>如果发生报错</p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">E: Unable to locate package gazebo11</span><br></pre></td></tr></table></figure>

<p>可能是由于系统不支持<code>Gazebo</code>，在Ubuntu 16.04上就会报上述错误</p>
</li>
<li><p>检查是否安装成功</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gazebo</span><br></pre></td></tr></table></figure></li>
</ol>
<h2 id="用户界面"><a href="#用户界面" class="headerlink" title="用户界面"></a>用户界面</h2><p>通过点击<code>Gazebo</code>图标或者在终端输入</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gazebo</span><br></pre></td></tr></table></figure>

<p>将会看到如下界面</p>
<p><img src="ftu3-boot-screen.png"></p>
<p>接下来介绍Gazebo的界面</p>
<h3 id="The-Scene"><a href="#The-Scene" class="headerlink" title="The Scene"></a>The Scene</h3><p>场景(Scene)是模拟器的主要部分。这是模拟对象动画和你与环境交互的地方。</p>
<p><img src="ftu3-scene.png" alt="img"></p>
<h3 id="The-Panels"><a href="#The-Panels" class="headerlink" title="The Panels"></a>The Panels</h3><p>左右两边的面板都可以通过拖动分隔条（五个点）来显示、隐藏或调整他们的大小。</p>
<p><img src="ftu3-panels.png"></p>
<h4 id="左侧面板"><a href="#左侧面板" class="headerlink" title="左侧面板"></a>左侧面板</h4><p>左侧的面板默认是打开的，这里有三个选项卡</p>
<ul>
<li><strong>WORLD</strong>：world选项卡会显示出当前场景中的模型，并允许您查看和修改模型参数，比如它们的位姿。你也可以通过扩展“GUI”选项和调整相机姿势来改变相机视角。</li>
<li><strong>INSERT</strong>：INSERT选项卡是您向模拟器添加新模型的地方。要查看模型列表，您可能需要单击箭头来展开文件夹。点击(并释放)你想要插入的模型，然后在场景中再次点击添加它</li>
<li><strong>Layer</strong>:  Layers选项卡组织并显示模拟过程中可用的不同可视化组(如果有的话)。一个层可以包含一个或多个模型。打开或关闭一个层将显示或隐藏该层中的模型。</li>
</ul>
<h4 id="右侧面板（默认隐藏）"><a href="#右侧面板（默认隐藏）" class="headerlink" title="右侧面板（默认隐藏）"></a>右侧面板（默认隐藏）</h4><p>默认情况下，右面板是隐藏的。单击并拖动分隔条以打开它。右边的面板可以用来与选定模型的可移动部件(关节)进行交互。如果场景中没有选择模型，面板不会显示任何信息。</p>
<h3 id="工具栏"><a href="#工具栏" class="headerlink" title="工具栏"></a>工具栏</h3><p>主工具栏包括一些最常用的与模拟器交互的选项，例如:选择、移动、旋转和缩放对象的按钮; 创建简单的形状(如立方体，球体，圆柱体)和复制/粘贴。接下来点击每一个按钮可以查看他们是如何工作的</p>
<p><img src="ftu3-top-toolbar.png"></p>
<ul>
<li><p>选择模式：在场景中导航</p>
</li>
<li><p>平移模式：选择模型，可以进行移动</p>
</li>
<li><p>旋转模式：选择模型，可以进行旋转</p>
</li>
<li><p>缩放模式：选择模型，可以进行缩放</p>
</li>
<li><p>Undo/Redo: Undo/Redo在场景中的动作</p>
</li>
<li><p>简单模型：插入一些简单的模型到场景中</p>
</li>
<li><p>灯光：可以向场景中添加灯光</p>
</li>
<li><p>Copy/Paste: 复制/粘贴场景中的模型</p>
</li>
<li><p>对齐：把一个模型对齐到另外一个模型</p>
</li>
<li><p>snap: snap one model to another</p>
</li>
<li><p>视角转变：可以选择各个角度观察场景</p>
</li>
</ul>
<h3 id="底部工具栏"><a href="#底部工具栏" class="headerlink" title="底部工具栏"></a>底部工具栏</h3><p>底部的工具栏显示模拟的数据，如模拟时间及其与现实时间的关系。“模拟时间”指的是模拟使用的时间，他可能比真实世界的时间（现实时间）慢或快，这取决于运行模拟所需的计算量。</p>
<p>Gazebo中的世界状态在每次迭代中都会计算一次。您可以在底部工具栏的右侧看到迭代次数。每次迭代都将模拟推进固定的秒数，称为步长。默认步长为1毫秒。您可以按下pause按钮暂停模拟，并使用step按钮一次执行几个步骤。</p>
<p><img src="ftu3-bottom-toolbar.png" alt="img"></p>
<h3 id="菜单"><a href="#菜单" class="headerlink" title="菜单"></a>菜单</h3><p>和大多数应用程序一样，Gazebo的顶部也有一个应用程序菜单。有些菜单选项重复出现在工具栏或场景中的右键菜单选项中。</p>
<p><img src="ftu3-menu-options.png"></p>
<h3 id="鼠标控制"><a href="#鼠标控制" class="headerlink" title="鼠标控制"></a>鼠标控制</h3><p>在场景中导航时，鼠标非常有用。我们强烈建议使用鼠标与滚轮，右键单击模型也打开一个带有各种选项的上下文菜单。以下是用于在场景中导航并更改视角的基本鼠标操作。</p>
<p><img src="ftu3-mouse-controls.png"></p>

      
    </div>
    <footer>
      
        
        
  
  <div class="tags">
    <a href="/blog/tags/gazebo/">gazebo</a>
  </div>

        
  <div class="addthis addthis_toolbox addthis_default_style">
    
      <a class="addthis_button_facebook_like" fb:like:layout="button_count"></a>
    
    
      <a class="addthis_button_tweet"></a>
    
    
      <a class="addthis_button_google_plusone" g:plusone:size="medium"></a>
    
    
      <a class="addthis_button_pinterest_pinit" pi:pinit:layout="horizontal"></a>
    
    <a class="addthis_counter addthis_pill_style"></a>
  </div>
  <script src="//s7.addthis.com/js/300/addthis_widget.js"></script>

      
      <div class="clearfix"></div>
    </footer>
  </div>
</article>


<section id="comment">
  <h1 class="title">Comments</h1>

  
      <div id="fb-root"></div>
<script>
  (function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=123456789012345";
    fjs.parentNode.insertBefore(js, fjs);
  }(document, 'script', 'facebook-jssdk'));
</script>

<div class="fb-comments" data-href="http://chargerkong.gitee.io/blog/2021/04/07/gazebo%E7%9A%84%E4%BD%BF%E7%94%A8%EF%BC%88%E4%B8%80%EF%BC%89/index.html" data-num-posts="5" data-width="840" data-colorscheme="light"></div>
      
  
</section>

</div></div>
    <aside id="sidebar" class="alignright">
  <div class="search">
  <form action="//google.com/search" method="get" accept-charset="utf-8">
    <input type="search" name="q" results="0" placeholder="Search">
    <input type="hidden" name="as_sitesearch" value="chargerkong.gitee.io/blog">
  </form>
</div>


  

  
<div class="widget tag">
  <h3 class="title">Tags</h3>
  <ul class="entry">
  
    <li><a href="/blog/tags/gazebo/">gazebo</a><small>1</small></li>
  
    <li><a href="/blog/tags/true/">true</a><small>1</small></li>
  
  </ul>
</div>

</aside>
    <div class="clearfix"></div>
  </div>
  <footer id="footer" class="inner"><div class="alignleft">
  
  &copy; 2021 John Doe
  
</div>
<div class="clearfix"></div></footer>
  
<script src="/blog/js/jquery-3.4.1.min.js"></script>


<script src="/blog/js/jquery.imagesloaded.min.js"></script>


<script src="/blog/js/gallery.js"></script>






<link rel="stylesheet" href="/blog/fancybox/jquery.fancybox.css">


<script src="/blog/fancybox/jquery.fancybox.pack.js"></script>

<script>
(function($){
  $('.fancybox').fancybox();
})(jQuery);
</script>

<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ["$","$"], ["\\(","\\)"] ],
            skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'],
            processEscapes: true
        }
    });
    MathJax.Hub.Queue(function() {
        var all = MathJax.Hub.getAllJax();
        for (var i = 0; i < all.length; ++i)
            all[i].SourceElement().parentNode.className += ' has-jax';
    });
</script>
<!-- <script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>


</body>
</html>
